package Persistencia;

import Negocio.Cliente;
import Negocio.Despesa;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;


public class DespesaDAO extends BaseDAO {

        private PreparedStatement stIncluir;
        private PreparedStatement stLista;
        private PreparedStatement stRemover;
        private PreparedStatement stConsulta;

        public DespesaDAO() throws IOException {
            super();
            Connection con = getConexao();
            try {
                stIncluir = con.prepareStatement("INSERT INTO despesas (descricao,quantidade,precoUnitario,total) VALUES (?,?,?,?)");
                stLista = con.prepareStatement("SELECT * FROM despesas order by numero");
                stRemover = con.prepareStatement("DELETE * FROM locadora WHERE nomeC=?");
                stConsulta=con.prepareStatement("SELECT * FROM cliente WHERE nome ilike ? ");
            } catch(SQLException e) {
                throw new IOException("Nao foi possivel criar as consultas: " + e.getMessage());
            }
        }

	public void incluir(Despesa d) throws IOException {
		try {
                    
                    stIncluir.setString(1, d.getDescricao());
                    stIncluir.setInt(2, d.getQuantidade());
                    stIncluir.setDouble(3, d.getPrecoUnitario());
                    stIncluir.setDouble(4, d.getPrecoTotal());
                    stIncluir.executeUpdate();
                } catch(SQLException e) {
                    throw new IOException("Erro ao incluir O/: " + e.getMessage());
                }
	}

	public ArrayList<Despesa> consulta() throws IOException {
		ArrayList<Despesa> tmp = new ArrayList<Despesa>();
		try {
                        ResultSet rs = stLista.executeQuery();
                        while(rs.next()) {
                            tmp.add(new Despesa(rs.getString("descricao"),rs.getInt("quantidade"),rs.getDouble("precoUnitario"),rs.getDouble("total")));
                        }
		} catch(SQLException e) {
			throw new IOException("Erro ao consultar: " + e.getMessage());
		}
             return tmp;
	}
        public ArrayList<Despesa> consultaPorNome(String descricao) throws IOException {
		ArrayList<Despesa> tmp = new ArrayList<Despesa>();
		try {
                        stConsulta.setString(1, descricao + "%" );
                      
                        ResultSet rs = stConsulta.executeQuery();

                            //JOptionPane.showMessageDialog(null, "Cliente Não encontrado");

                        while(rs.next()) {
                            tmp.add(new Despesa(rs.getString("descricao"),rs.getInt("quantidade"),rs.getDouble("precoUnitario"),rs.getDouble("total")));
                        }
		 }catch(SQLException e) {
			throw new IOException("Erro ao consultar: " + e.getMessage());
		}
               
             return tmp;
	}

}

